//  配置项

/**
 * dialogConfig 前提是ifDialog 为true, 默认false
 * 
 * dialogConfig type 默认 input, 可选项[image, password, checkbox]
 * select 提供了data则指定的url失效
 * 
 * select 单选 (type = 'select')
 * data 类型 data: [
              { value: -1, name: '全部' },
              { value: 'false', name: '访问人员' },
              { value: 'true', name: '管理人员' }
            ]

 * url类型  url: {
                    api: '/companys/get_all',
                    method: 'get',
                    map: {
                      value: 'companyName',
                      name: 'id'
                    }
                  },
 *
 * 2024.5.21 新增多选
 * select 多选 (type = 'select' multiple = true(必填))
 * 
 * 所有字段的default值配置的数据在默认值为空时生效
 * 字段的label属性在没有配置时默认为该字段名(Object时), 在key-value 时接受的值为label值,
 * btn style 定义按钮的样式, 默认可选element-ui的btn type样式 primary / success / warning / danger / info / text
 * 
 * 
 * 2025/4/30 新增表头操作选项, 非dialog的数据不写dialog 参数, 可以选择api 查询条件， use_filter 会使用filter的查询条件来走接口,
 * 也可以使用排除项，来去除filter中的参数来走接口, ignore_filter:[key1，key2], 否则使用所有filter数据
 * 新增时间查询区间，注意要写清楚start, end 参数，否则无效
 * 
 * 2025/5/1 新增时间段查询
 * 所有的时间段查询条件的key 注意时间段 的key不是原本的key,是 ${key}_start, ${key}_end, _start是开始时间，_end 是结束时间
 * 
 *   这是管理员的操作表
 * 
 * api 方式 restful方式, 注意只有get请求携带params, 其他请求使用路径方式, json 格式传参
 * 
 * 2025/5/10 新增表单显示依赖条件[原来可以使用showVerfiy 获取当前数据来进行验证], 现在新增依赖当前dialog元素值控制是否显示
 * 如[父元素 是 select 类型， 该父元素的值改变时，可以通过函数foreign_show：是一个列表
 * 
 * 2025/5/12 新增多级选择, 用户dialog
 * @example 
 * type:'cascader', 固定
 * props:{multiple: true, expandTrigger: 'hover'}  用于控制前端选择的情况，multiple表示可以多选，expandTrigger展示方式
 * map:{name:value,child:{name:value}] name 指的是前端显示需要的后端传递的字段，value 表示需要传递给后端的数据
 * api:{}
 * data:[]// 如果有data有数据则api 的数据失效
 * 
 * 
 * [ 
 * key:显示条件函数[判断成功即显示]
 * ]]
 */

// let uP = Number(localStorage.getItem("userPermission"))

// 



export default {
  view: [
   
    {
      name:'谷仓产品',
      tableName: 'gc_product',
      data: {
        TopConfig: {
          data: [{
            default: '',
            required: false,
            key: 'product_sku',
            placeholder: '请输入谷仓商品sku',
          },
          {
            default: '',
            required: false,
            key: 'product_title_cn',
            placeholder: '请输入谷仓中文名称',
          },
          {
            default: '',
            required: false,
            type:'date',
            key: 'last_sale_time_start',
            placeholder: '请选择开始日期',
          },
          {
            default: '',
            required: false,
            type:'date',
            key: 'last_sale_time_end',
            placeholder: '请输入终止日期',
          }
          ],
          btn: [
            // 搜索按钮
            {
              isShow: true,
              label: '搜索',
              type: 'search',
              url: {
                method: 'get',
                api: '/product/query',
                path: [
                  { key: 'page', index: 1, required: true },
                  { key: 'pagesize', index: 2, required: true }
                ],
                params: [
                  
                ]
              }
            },
  
            {
              isShow: true,
              label: '新增',
              ifDialog: true,
              style: 'success',
              url: {
                method: 'post',
                api: '/paragraph/add'
              },
              dialogConfig: [
                {
                  default: '',
                  placeholder: '请输入用户标签',
                  label: '标签',
                  key: 'custom_tag',
                  required: false,
                  isShow: true,
                },
                // {
                //   default: '',
                //   placeholder: '请输入段落文字',
                //   label: '段落文字',
                //   key: 'text',
                //   required: true,
                //   isShow: true,
                // },
                {
                  default: 1,
                  key: 'ues_where',
                  required: true,
                  isShow: false,
                },
                {
                  default: true,
                  key: 'type',
                  required: true,
                  isShow: false,
                },
                {
                  default: '',
                  placeholder: '请选择图片',
                  label: '上传图片',
                  key: 'image_path',
                  required: true,
                  isShow: true,
                  type:'image',
                  url: { api: '/users/common/upload' }, max: 1,
                },
                {
                  default: '',
                  placeholder: '请输入排序',
                  label: '排序',
                  key: 'order_by',
                  required: true,
                  type:'number',
                  isShow: true,
                }
              ],
            }
          ]
        },


        // table 每个字段及其类型
        tableColumn: {
          column: [
            { label: '', key: 'id', isShow: false, type: 'number' },
            { label: 'sku', key: 'product_sku', isShow: true, type: 'text' },
            { label: '商品中文名称', key:'product_title_cn', isShow: true },
            { label: '出售时间', key: 'last_sale_time', isShow: true, type:'date' },
            { label: '出售订单编号', key: 'last_order', isShow: true, },
            { label: '间隔时间', key: 'hours_since_last_sale', isShow: true, },
            {label:'退单次数', key:'matched_return_count', isShow:true}
          ],
          btn: [
            /**
             * 无须区分每个btn 的作用,因为每个btn都单独对应自己的url,仅需设置ifDialog来表示是否显示对应的弹框即可
             * 每个dialog必须配置该dilog对应的字段值, 当点击dialog的ok时实际触发的是改btn的url
             */
            // {
            //   label: '修改',
            //   style: 'primary',
            //   ifDialog: true,
            //   dialogConfig: [
            //     {
            //       default: '',
            //       placeholder: '请输入用户标签',
            //       label: '标签',
            //       key: 'custom_tag',
            //       required: true,
            //       isShow: true,
            //     },
            //     {
            //       default: '',
            //       key: 'id',
            //       required: true,
            //       isShow: false,
            //     },
            //     {
            //       default: '',
            //       placeholder: '请输入排序',
            //       label: '排序',
            //       key: 'order_by',
            //       required: true,
            //       type:'number',
            //       isShow: true,
            //     },
            //     // {
            //     //   default: '',
            //     //   placeholder: '请上传视频',
            //     //   label: '上传视频',
            //     //   key: 'text',
            //     //   required: true,
            //     //   isShow: true,
            //     //   type:'ossVideo'
            //     // },
            //     {
            //       key: 'image_path',
            //       type: 'image',
            //       url: { api: '/users/common/upload' }, max: 1,
            //       placeholder: '轮播图片',
            //       label: '轮播图片',
            //       isShow: true,
            //       required: true
            //     },
            //   ],
            //   url: {
            //     method: 'post',
            //     api: '/paragraph/add',
            //     path: []
            //   }
            // },
            // {
            //   label: '删除',
            //   style: 'danger',
            //   url: {
            //     method: 'get',
            //     api: '/paragraph/delete',
            //     path: [{
            //       index: 1,
            //       key: 'id',
            //       required: true
            //     }]
            //   }
            // }
          ],
        },
        url: {
          method: 'get',
          api: '/product/query',
          pageSize: 20,
          params: [
          ]
        }
      },
    },

    {
      name:'模型生成',
      tableName: 'model_generate',
      data: {
        TopConfig: {
          data: [{
            default: '',
            required: false,
            key: 'product_sku',
            placeholder: '请输入谷仓商品sku',
          },
          {
            default: '',
            required: false,
            key: 'product_title_cn',
            placeholder: '请输入谷仓中文名称',
          },
          {
            default: '',
            required: false,
            type:'date',
            key: 'last_sale_time_start',
            placeholder: '请选择开始日期',
          },
          {
            default: '',
            required: false,
            type:'date',
            key: 'last_sale_time_end',
            placeholder: '请输入终止日期',
          }
          ],
          btn: [
            // 搜索按钮
            {
              isShow: true,
              label: '搜索',
              type: 'search',
              url: {
                method: 'get',
                api: '/product/query',
                path: [
                  { key: 'page', index: 1, required: true },
                  { key: 'pagesize', index: 2, required: true }
                ],
                params: [
                  
                ]
              }
            },

            {
              isShow: true,
              label: '新增',
              ifDialog: true,
              style: 'success',
              url: {
                method: 'post',
                api: '/generate/create_model'
              },
              dialogConfig: [
                {
                  default: '',
                  placeholder: '请输入表名',
                  label: '表名',
                  key: 'table_name',
                  required: true,
                  isShow: true,
                },

                {
                  default: 0,
                  placeholder: '请选择表的类型',
                  label: '表的描述',
                  key: 'table_type',
                  required: true,
                  isShow: true,
                  type:'select',
                  data:[
                    {name:'InnoDB', value:0},
                    {name:'MyISAM', value:1}
                  ]
                },

                {
                  default: '',
                  placeholder: '请输入表的描述',
                  label: '表的描述',
                  key: 'table_describe',
                  type:'textarea',
                  required: true,
                  isShow: true,
                }
              ],
            }
          ]
        },


        // table 每个字段及其类型
        tableColumn: {
          column: [
            { label: '', key: 'id', isShow: false, type: 'number' },
            { label: '表名', key: 'table_name', isShow: true, type: 'text' },
            { label: '表的类型', key:'table_type', isShow: true, type:'select',
                  data:[
                    {name:'InnoDB', value:0},
                    {name:'MyISAM', value:1}
                  ] },
            { label: '表的描述', key:'table_describe', isShow: true },
            { label: '创建者', key: 'userInfo.userName', isShow: true, type:'text' },
            { label:'创建时间', key:'create_time', isShow:true, type:'date'},
            

            // 约束类型, 普通索引, 主键约束， 唯一性约束，非空约束，
           
          ],
          btn: [
           
          ],
        },
        url: {
          method: 'get',
          api: '/generate/query_model',
          pageSize: 20,
          params: [
          ]
        }
      },
    },

    {
      name:'模型字段生成',
      tableName: 'model_generate_column',
      data: {
        TopConfig: {
          data: [{
            default: '',
            required: false,
            key: 'product_sku',
            placeholder: '请输入谷仓商品sku',
          },
          {
            default: '',
            required: false,
            key: 'product_title_cn',
            placeholder: '请输入谷仓中文名称',
          },
          {
            default: '',
            required: false,
            type:'date',
            key: 'last_sale_time_start',
            placeholder: '请选择开始日期',
          },
          {
            default: '',
            required: false,
            type:'date',
            key: 'last_sale_time_end',
            placeholder: '请输入终止日期',
          }
          ],
          btn: [
            // 搜索按钮
            {
              isShow: true,
              label: '搜索',
              type: 'search',
              url: {
                method: 'get',
                api: '/product/query',
                path: [
                  { key: 'page', index: 1, required: true },
                  { key: 'pagesize', index: 2, required: true }
                ],
                params: [
                  
                ]
              }
            },

            {
              isShow: true,
              label: '新增',
              ifDialog: true,
              style: 'success',
              url: {
                method: 'post',
                api: '/generate/add_model_column'
              },
              dialogConfig: [
                {
                  default: '',
                  type: 'select',
                  placeholder: '请选择表名',
                  label: '选择表名',
                  key: 'tableId',
                  url: {
                    api: '/generate/query_model/all',
                    method: 'get',
                    map: {
                      value: 'table_name',
                      name: 'id'
                    }
                  },
                  required: true,
                  isShow: true,
                },
                {
                  default: '',
                  placeholder: '请输入模型字段',
                  label: '字段',
                  key: 'column',
                  required: true,
                  isShow: true,
                },


                {
                  default: '',
                  placeholder: '请选择前端默认类型',
                  label: '前端默认类型',
                  key: 'default_vue_type',
                  required: true,
                  isShow: true,
                  type:'select',
                  data: [
                    { value: 1, name: 'int 数字类型' },
                    { value: 2, name: 'float 两位小数类型' },
                    { value: 3, name: 'text 类型' },
                    { value: 4, name: 'textarea 类型' },
                    { value: 5, name: '图片类型' },
                    { value: 6, name: 'oss video 类型' },
                    { value: 7, name: '时间类型' },
                    { value: 8, name: 'bool 类型' }
                  ],
                  foreign_default_value:[
                    { 
                      target_key:'column_type', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:1,
                      type:'select',
                      check:(value)=>{return value==1}
                    },
                    { 
                      target_key:'column_type', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:2,
                      type:'select',
                      check:(value)=>{return value==2}
                    },
                    { 
                      target_key:'column_type', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:3,
                      type:'select',
                      check:(value)=>{return value==3}
                    },
                    { 
                      target_key:'column_type', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:4,
                      type:'select',
                      check:(value)=>{return value==4}
                    },
                    { 
                      target_key:'column_type', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:3,
                      type:'select',
                      check:(value)=>{return value==5}
                    },
                    { 
                      target_key:'column_type', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:3,
                      type:'select',
                      check:(value)=>{return value==6}
                    },
                    { 
                      target_key:'column_type', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:5,
                      type:'select',
                      check:(value)=>{return value==7}
                    },
                   { 
                      target_key:'column_type', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:6,
                      type:'select',
                      check:(value)=>{return value==8}
                    },


                    // 这里是下面mysql的默认数据
                     { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:0,
                      type:'number',
                      check:(value)=>{return value==1}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:"0.00",
                      type:'text',
                      check:(value)=>{return value==2}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:'',
                      type:'text',
                      check:(value)=>{return value==3}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:'',
                      type:'text',
                      check:(value)=>{return value==4}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:'',
                      type:'text',
                      check:(value)=>{return value==5}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:'',
                      type:'text',
                      check:(value)=>{return value==6}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:'',
                      type:'date',
                      check:(value)=>{return value==7}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:0,
                      type:'number',
                      check:(value)=>{return value==8}
                    },
                    { 
                      target_key:'varchar_length', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:16,
                      type:'number',
                      check:(value)=>{return value==3}
                    },
                    { 
                      target_key:'varchar_length', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:128,
                      type:'number',
                      check:(value)=>{return value==5}
                    },
                    { 
                      target_key:'varchar_length', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      value:128,
                      type:'number',
                      check:(value)=>{return value==6}
                    }
                  ],
                   foreign_show:[
                   { 
                      target_key:'varchar_length', 
                      type:"this",
                      params_keys:["default_vue_type"],
                      check:(value)=>{return [3,5,6].includes(value)}
                    }
                  ]
                },


                {
                  default: '',
                  placeholder: '请选择数据类型',
                  label: '数据类型',
                  key: 'column_type',
                  required: true,
                  isShow: true,
                  type:'select',
                  data: [
                    { value: 1, name: 'int 类型' },
                    { value: 2, name: '小数两位' },
                    { value: 3, name: '字符串类型' },
                    { value: 4, name: '长文本' },
                    { value: 5, name: '时间类型' },
                    { value: 6, name: 'bool 类型' }
                  ],
                  foreign_show:[
                   { 
                      target_key:'varchar_length', 
                      type:"this",
                      params_keys:["column_type"],
                      check:(value)=>{return value==3}
                    }
                  ],
                  foreign_default_value:[
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["column_type"],
                      value:0,
                      type:'number',
                      check:(value)=>{return value==1}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["column_type"],
                      value:"0.00",
                      type:'text',
                      check:(value)=>{return value==2}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["column_type"],
                      value:'',
                      type:'text',
                      check:(value)=>{return value==3}
                    },
                    { 
                      target_key:'default_value', 
                      type:"textarea",
                      params_keys:["column_type"],
                      value:'',
                      type:'flaot',
                      check:(value)=>{return value==4}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["column_type"],
                      value:'',
                      type:'date',
                      check:(value)=>{return value==5}
                    },
                    { 
                      target_key:'default_value', 
                      type:"this",
                      params_keys:["column_type"],
                      value:0,
                      type:'number',
                      check:(value)=>{return value==6}
                    },
                  ]
                },
                {
                  default: 16,
                  placeholder: '字符串长度',
                  label: '字符串长度',
                  key: 'varchar_length',
                  required: false,
                  isShow: false,
                  type:'number',
                },
                {
                  default: '',
                  placeholder: '请输入前端展示名',
                  label: '前端展示名',
                  key: 'vue_name',
                  required: true,
                  isShow: true,
                },
                {
                  default: 0,
                  placeholder: '请选择约束',
                  label: '约束类型',
                  key: 'rules',
                  required: false,
                  isShow: true,
                  type:'select',
                  data: [
                    { value: 0, name:'普通字段'},
                    { value: 1, name: '主键约束' },
                    { value: 2, name: '唯一性约束' },
                    { value: 3, name: '外键约束' },
                    { value: 4, name: '普通索引' },
                  ],
                  foreign_show:[
                   { 
                      target_key:'forgine_key', 
                      type:"this",
                      params_keys:["index"],
                      check:(value)=>{return value==3}
                    }
                  ],
                },
                {
                  default: 0,
                  placeholder: '请选择外键',
                  label: '外键',
                  key: 'forgine_key',
                  required: false,
                  isShow: false,
                  type:'select',
                   data: [
                    { value: 0, name:'不使用约束'},
                    { value: 1, name: '主键约束' },
                    { value: 2, name: '唯一性约束' },
                    { value: 3, name: '外键约束' },
                    { value: 4, name: '普通索引' },
                  ]
                },
                {
                  default: [],
                  placeholder: '联合索引',
                  label: '联合索引',
                  key: 'index_union',
                  required: false,
                  isShow: true,
                  multiple: true,
                  type:'select',
                  url: {
                    api: '/generate/query_index_union/all',
                    method: 'get',
                    map: {
                      value: 'column',
                      name: 'id'
                    }
                  },
                },
                {
                  default: '',
                  placeholder: '默认数据',
                  label: '默认数据',
                  key: 'default_value',
                  required: false,
                  isShow: true,
                },
              ],
            }
          ]
        },


        // table 每个字段及其类型
        tableColumn: {
          column: [
            { label: '', key: 'id', isShow: false, type: 'number' },
            { label: '字段名', key: 'column', isShow: true, type: 'text' },
            { label: '字段类型', key:'column_type', isShow: true,
              type:'select',
                  data: [
                    { value: 1, name: 'int 类型' },
                    { value: 2, name: '小数两位' },
                    { value: 3, name: '字符串类型' },
                    { value: 4, name: '长文本' },
                    { value: 5, name: '时间类型' },
                    { value: 6, name: 'bool 类型' }
                  ],
             },
            { label: '前端展示名', key:'vue_name', isShow: true },
            { label: '默认前端类型', key: 'default_vue_type', isShow: true, type:'select',data: [
                    { value: 1, name: 'int 数字类型' },
                    { value: 2, name: 'float 两位小数类型' },
                    { value: 3, name: 'text 类型' },
                    { value: 4, name: 'textarea 类型' },
                    { value: 5, name: '图片类型' },
                    { value: 6, name: 'oss video 类型' },
                    { value: 7, name: '时间类型' },
                    { value: 8, name: 'bool 类型' }
                  ]},
            { label:'约束类型', key:'rules', isShow:true,type:'select',
                  data: [
                    { value: 0, name:'普通字段'},
                    { value: 1, name: '主键约束' },
                    { value: 2, name: '唯一性约束' },
                    { value: 3, name: '外键约束' },
                    { value: 4, name: '普通索引' },
                  ],},
            { label:'默认数据', key:'default_value', isShow:true},
            { label:'联合索引', key:'index_union',multiple:true, isShow:true, type:'select',
              url: {
                    api: '/generate/query_index_union/all',
                    method: 'get',
                    map: {
                      value: 'column',
                      name: 'id'
                    }
                  },
            },
            { label: '创建者', key: 'userInfo.userName', isShow: true, },
            { label: '创建时间', key: 'create_time', isShow: true, type:'date'}
            

            // 约束类型, 普通索引, 主键约束， 唯一性约束，非空约束，
           
          ],
          btn: [
           
          ],
        },
        url: {
          method: 'get',
          api: '/generate/query_model_column',
          pageSize: 20,
          params: [
          ]
        }
      },
    },

  ]
}